package cn.hospital.dao;

import cn.hospital.entity.Department;
import cn.hospital.entity.FoGroup;
import cn.hospital.entity.MeaningUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 医生表的dao层
 */

@Mapper
public interface MeaningUserMapper {
    /**
     * 查询是否重复，判断手机号注册的时候是否重复
     *
     * @param userPhone 手机号
     * @return
     */
    Integer findByPhone(String userPhone);

    /**
     * 查询是否重复，判读昂邮箱注册的时候是否重复
     *
     * @param userEmail 邮箱
     * @return
     */
    Integer findByEmail(String userEmail);

    /**
     * 分页查询
     * @param map
     * @return
     */
    List<MeaningUser> selectuserlistbymap(Map<String, Object> map);

    /**
     * 注册方法
     *
     * @param meaningUser 医生的实体类
     * @return
     */
    Integer addByMeaningUser(MeaningUser meaningUser);

    /**
     * 登录方法
     *
     * @param phone    电话
     * @param email    邮箱
     * @param username 用户名
     * @return
     */
    MeaningUser findByMeaningUser(@Param("phone") String phone, @Param("email") String email,
                                  @Param("username") String username);

    /**
     * 查询总记录数
     * @return
     */
    Integer selectusercount(MeaningUser meaningUser);

    /**
     * 通过id删除用户
     * @param id
     * @return
     */
    Integer delMeaningUser(Integer id);

    /**
     * 通过id回显修改内容
     */
    MeaningUser selectuserbyid(Integer id);

    /**
     * 通过id保存修改内容
     * @param
     * @return
     */
    Integer upMeaningUser(MeaningUser meaningUser);

    /**
     *根据科室id查询用户列表
     * @return
     */
    List<MeaningUser> selectuserlist(Integer id);

    /**
     * 查询所有医生信息（医生id，医生姓名）
     *
     * @return
     */
    List<MeaningUser> selectBy();

    /**
     * 根据科室查用户
     * @param department
     * @return
     */
    List<MeaningUser> selectMeaningUser(Department department);

    /**
     * 根据随访组id查用户
     *
     * @param foGroup
     * @return
     */
    List<MeaningUser> selectDepartmentId(FoGroup foGroup);

    /**
     * 修改用户是否加入随访组状态
     *
     * @param meaningUser
     * @return
     */
    Integer updatefo2GroupIdState(MeaningUser meaningUser);
}